package com.ruoyi.community.service.impl;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.ruoyi.community.mapper.AdResourceMapper;
import com.ruoyi.community.domain.AdResource;
import com.ruoyi.community.service.IAdResourceService;
import org.springframework.web.multipart.MultipartFile;

/**
 * 广告资源Service业务层处理
 * 
 * @author ruoyi
 * @date 2021-08-23
 */
@Service
public class AdResourceServiceImpl implements IAdResourceService 
{
    @Autowired
    private AdResourceMapper adResourceMapper;
    @Value("${addr.adPicture}")
    private String pictureBaseUrl;
    /**
     * 查询广告资源
     * 
     * @param id 广告资源ID
     * @return 广告资源
     */
    @Override
    public AdResource selectAdResourceById(Long id)
    {
        return adResourceMapper.selectAdResourceById(id);
    }

    /**
     * 查询广告资源列表
     * 
     * @param adResource 广告资源
     * @return 广告资源
     */
    @Override
    public List<AdResource> selectAdResourceList(AdResource adResource)
    {
        adResource.setCommunityId(SecurityUtils.getCommunityId());
        return adResourceMapper.selectAdResourceList(adResource);
    }

    /**
     * 新增广告资源
     * 
     * @param adResource 广告资源
     * @return 结果
     */
    @Override
    public int insertAdResource(AdResource adResource)
    {
        adResource.setCommunityId(SecurityUtils.getCommunityId());
        return adResourceMapper.insertAdResource(adResource);
    }

    /**
     * 修改广告资源
     * 
     * @param adResource 广告资源
     * @return 结果
     */
    @Override
    public int updateAdResource(AdResource adResource)
    {
        return adResourceMapper.updateAdResource(adResource);
    }

    /**
     * 批量删除广告资源
     * 
     * @param ids 需要删除的广告资源ID
     * @return 结果
     */
    @Override
    public int deleteAdResourceByIds(Long[] ids)
    {
        return adResourceMapper.deleteAdResourceByIds(ids);
    }

    /**
     * 删除广告资源信息
     * 
     * @param id 广告资源ID
     * @return 结果
     */
    @Override
    public int deleteAdResourceById(Long id)
    {
        return adResourceMapper.deleteAdResourceById(id);
    }

    @Override
    public String uploadPicture(MultipartFile file) {
        System.out.println(pictureBaseUrl);
        if (file != null) {
            String path = null;// 文件路径
            String imgType = null;//图片类型
            String  fileName = file.getOriginalFilename();// 原文件名称
            //System.out.println(fileName);
            imgType = fileName.contains(".") ?fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()):null;
            if(imgType!=null){
                if("GIF".equals(imgType.toUpperCase()) || "PNG".equals(imgType.toUpperCase()) || "JPEG".equals(imgType.toUpperCase()) || "JPG".equals(imgType.toUpperCase())){
                    // 项目在容器中实际发布运行的根路径
                    // 自定义的文件名称
                    String trueFileName =
                            SecurityUtils.getCommunityId() + "_" + SecurityUtils.getUserID() + "_" + UUID.randomUUID().toString().replace("-","") + "_" +  fileName;
                    // 设置图片存放的路径
                    path= pictureBaseUrl + trueFileName;
                    // 转存文件到指定路径
                    try {
                        file.transferTo(new File(path)); // 转存而不是写出
                    } catch (Exception e){
                        return "error";
                    }
                    System.out.println(AjaxResult.success("上传成功", trueFileName));
                    System.out.println(path);
                    return trueFileName;
                }
            }
        } else {
            return null;
        }
        return null;
    }

    @Override
    public String delPicture(String name) {
        File file = new File(pictureBaseUrl + name);
        if (file.exists()) {
            file.delete();
            return "success";
        }
        return "error";
    }
}
